package com.zf.proxy.jdk;

import java.lang.reflect.Proxy;

/**
 * jdk动态代理
 *
 * @author Zhou Feng
 */
public class JdkTestMain {
    public static void main(String[] args) {
        //设置这个变量后，JDK会把jdk动态代理生成的类写入到“当前项目的根目录/全类名目录”，不设置则不写入(见 java.lang.reflect.ProxyGenerator#saveGeneratedFiles)
        // jdk <= 8
        // System.setProperty("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");
        // jdk > 8
        System.setProperty("jdk.proxy.ProxyGenerator.saveGeneratedFiles", "true");

        JdkIA proxy = (JdkIA) Proxy.newProxyInstance(
                JdkA.class.getClassLoader(),
                JdkA.class.getInterfaces(),
                new JdkInvoker(new JdkA())
        );

        System.out.println(proxy.hello("way"));
    }
}
